package pub.gll.onepeas.libbase.taskchain

import android.content.Context
import android.os.Bundle


interface SingleJob {
    companion object{
        //该任务还没有达到执行条件
        const val JOB_NOT_AVAILABLE = 100
        //该任务达到了执行任务的条件
        const val JOB_AVAILABLE = 101
        //该任务不关联任务条件，可直接执行
        const val JOB_COMBINED_BY_NOTHING = 102
        //该任务不能执行
        const val JOB_CANCELED = 103
    }
    /**
     * 判断任务是否应该执行的条件
     */
    fun handle(): Boolean

    /**
     * 执行任务，并在任务结束后通过callback通知任务链执行下一条任务
     */
    fun launch(context: Context, callback: () -> Unit)
    /**
     * 获取执行状态
     */
    fun status():Int

    /**
     * 设置执行状态
     */
    fun setStatus(level:Int)

    /**
     * 设置数据
     */
    fun setBundle(bundle: Bundle)
}